import { defineStore } from "pinia";
import { loginAPI } from "@/apis/user";
import { ref } from "vue";
import { userCartStore } from "./cartStore";
import { mergeCartAPI } from "@/apis/cart";

export const useUserStore = defineStore(
  "user",
  () => {
    const CartStore = userCartStore();
    // 1. 管理用户数据的state
    const userInfo = ref({});
    // 2. 定义接口数据的action函数
    // 在调用处传参数过来
    const getUserInfo = async ({ account, password }) => {
      const res = await loginAPI({ account, password });
      userInfo.value = res.result;
      // 合并购物车
      mergeCartAPI(
        CartStore.cartList.map((item) => {
          return {
            skuId: item.skuId,
            selected: item.selected,
            count: item.count,
          };
        })
      );
      CartStore.updateNewList();
    };

    // 清除用户信息；pinia本地化持久存储插件会同步的删除对饮数据
    const clearUserInfo = () => {
      userInfo.value = {};
      CartStore.clearCart();
    };
    // 3. 以对象的格式把State 和 action return
    return {
      userInfo,
      getUserInfo,
      clearUserInfo,
    };
  },
  // pinia持久化插件配置；配置完之后，其就会把  用户数据 userInfo 存储在本地，名为 user
  {
    persist: true,
  }
);
